package com.golang.api.util;

/**
 * 统一响应或请求编码和信息顶层接口
 *
 * @author wanmingyu
 * @create 2020/6/28 6:07 下午
 */
public interface StatusEnumSupport extends Assert<ServiceException> {

  /**
   * 响应编码
   *
   * @return T
   */
  Integer getCode ();

  /**
   * 响应信息
   *
   * @return String
   */
  String getMessage ();

  /**
   * 判断状态
   *
   * @param code T
   * @return boolean
   */
  default boolean equalsCode (Integer code) {
    return getCode().equals(code);
  }


  /**
   * 创建异常
   *
   * @param args
   * @return
   */
  @Override
  default ServiceException newException (Object... args) {
    throw new ServiceException(this, args);
  }

  /**
   * 创建异常
   *
   * @return
   */
  @Override
  default ServiceException newException () {
    throw new ServiceException(this);
  }
}
